// 核心的代码封装原则：
// 保证 .js 文件的纯粹性（功能的单一性）
import Vue from 'vue'
import App from './App.vue'
import router from './router'
// import App from './App_bak.vue'
// import App from './App_bak2.vue'
// import App from './App_bak3.vue'
// import { Loading } from 'element-ui'

// 导入富文本编辑器
import VueQuillEditor from 'vue-quill-editor'

// 导入了 Element UI 并注册全局组件
// import './plugins/element.js'
// 导入阿里图标
import './assets/fonts/iconfont.css'
// 导入全局样式
import './assets/css/global.css'

// 将来，也需要在这个文件中，配置 axios 请求库
// 配置请求的根路径
// 请求的拦截器
import axios from 'axios'
// 配置请求根路径
// axios.defaults.baseURL = 'http://127.0.0.1:8888/api/private/v1/'
axios.defaults.baseURL = 'https://www.liulongbin.top:8888/api/private/v1/'
// 定义 loading 的实例对象
let loadingInstance = null
// 配置请求的拦截器
axios.interceptors.request.use(function(config) {
  // TODO：展示 loading 效果
  const vm = new Vue()
  loadingInstance = vm.$loading({ fullscreen: true, background: 'rgba(0, 0, 0, 0.2)', spinner: 'el-icon-loading' })
  // 为请求头添加 Authorization 身份认证的字段
  config.headers.Authorization = window.sessionStorage.getItem('token') || ''
  // 在发送请求之前做些什么
  return config
})
// 配置响应的拦截器
axios.interceptors.response.use(function(response) {
  // TODO：隐藏 loading 效果
  loadingInstance.close()
  // token 要么过期，要么是伪造的
  if (response.data.meta.msg === '无效token') {
    // 强制跳转到登录页
    // console.log(router)
    window.sessionStorage.clear()
    router.push('/login')
  }
  return response
})
Vue.prototype.$http = axios
console.log('执行了main.js这个入口文件')

// 将富文本编辑器挂载为全局组件
Vue.use(VueQuillEditor)

// 在全局挂载格式化时间的方法
// 格式化事件的方法
Vue.prototype.dateFormater = dtStr => {
  const dt = new Date(dtStr)
  const y = dt.getFullYear()
  const m = padZero(dt.getMonth() + 1)
  const d = padZero(dt.getDate())
  const hh = padZero(dt.getHours())
  const mm = padZero(dt.getMinutes())
  const ss = padZero(dt.getSeconds())

  return `${y}-${m}-${d} ${hh}:${mm}:${ss}`
}
// 补零函数
function padZero(n) {
  return n > 9 ? n : '0' + n
}

Vue.config.productionTip = false

new Vue({
  router,
  render: h => h(App)
}).$mount('#app')
